﻿using System.Windows.Forms;
using System.Drawing;

namespace oqis.gis.frame
{
    public abstract class OQGTool:BaseCommand,IOQGTool
    {
        #region 类方法

        public OQGTool()
        {
            this.MapOperateMode = oqis.gis.frame.system.oqgMapOperateMode.Operating;
        }

        #endregion

        #region 属性

        /// <summary>
        /// 地图模式
        /// </summary>
        public virtual oqis.gis.frame.system.oqgMapOperateMode MapOperateMode { get; set; }

        /// <summary>
        /// 光标
        /// </summary>
        public virtual Cursor Cursor { get; set; }

        #endregion

        #region 事件

        #region 鼠标事件

        /// <summary>
        /// 点击事件
        /// </summary>
        public virtual void OnMouseClick(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 双击事件
        /// </summary>
        public virtual void OnMouseDoubleClick(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 鼠标移上时
        /// </summary>
        public virtual void OnMouseOn(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 鼠标悬停时
        /// </summary>
        public virtual void OnMouseOver(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 鼠标按下时
        /// </summary>
        public virtual void OnMouseDown(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 鼠标抬起时
        /// </summary>
        public virtual void OnMouseUp(object sender, MouseEventArgs e) { }

        /// <summary>
        /// 鼠标移走时
        /// </summary>
        public virtual void OnMouseLeave(object sender, MouseEventArgs e) { }

        #endregion

        #region 键盘事件

        /// <summary>
        /// 键盘按下
        /// </summary>
        /// <param name="sender">按钮对象</param>
        /// <param name="e">按钮事件</param>
        public virtual void OnKeyDown(object sender, KeyEventArgs e) { }

        /// <summary>
        /// 键盘抬起时
        /// </summary>
        /// <param name="sender">按钮对象</param>
        /// <param name="e">按钮事件</param>
        public virtual void OnKeyUp(object sender, KeyEventArgs e) { }

        /// <summary>
        /// 按键时
        /// </summary>
        /// <param name="sender">按钮对象</param>
        /// <param name="e">按钮事件</param>
        public virtual void OnKeyPress(object sender, KeyPressEventArgs e) { }

        #endregion

        #endregion

    }
}
